// DAO/Impl/LessonResourceDaoImpl.java
package com.hp.DAO.Impl;                         // 实现包

import com.hp.DAO.BaseDao;                       // 基类
import com.hp.DAO.LessonResourceDao;             // 接口：LessonResourceDao
import com.hp.Model.LessonResource;              // 实体：课时资源
import com.hp.Util.RowMapper;                    // 行映射器
import com.hp.Util.SimpleJdbcTemplate;           // JDBC 模板

import java.sql.Timestamp;                // 时间戳
import java.util.Date;                    // Date
import java.util.List;                    // List

/** LessonResourceDao 的 JDBC 实现 */
public class LessonResourceDaoImpl extends BaseDao implements LessonResourceDao {
    public LessonResourceDaoImpl(SimpleJdbcTemplate jdbc) { super(jdbc); } // 构造注入

    // RowMapper：ResultSet -> LessonResource
    private static final RowMapper<LessonResource> M = rs -> {
        LessonResource r = new LessonResource();                        // 新建实体
        r.setId(rs.getLong("id"));                                      // id
        r.setLessonId(rs.getLong("lesson_id"));                         // 课时ID
        r.setResType(rs.getString("res_type"));                         // 资源类型
        r.setTitle(rs.getString("title"));                              // 标题
        r.setFileUrl(rs.getString("fileUrl"));                                  // 链接
        Timestamp ts = rs.getTimestamp("created_at");                   // 创建时间
        r.setCreatedAt(ts == null ? null : new Date(ts.getTime()));     // 转 Date
        return r;                                                       // 返回
    };

    @Override
    public LessonResource findById(Long id) {                           // 按主键查询
        String sql = "SELECT id,lesson_id,res_type,title,url,created_at FROM lesson_resource WHERE id=?"; // SQL
        return queryOne(sql, M, id);                                    // 执行
    }

    @Override
    public List<LessonResource> listByLesson(Long lessonId) {           // 按课时列出
        String sql = "SELECT id,lesson_id,res_type,title,url,created_at FROM lesson_resource WHERE lesson_id=? ORDER BY id DESC"; // SQL
        return queryList(sql, M, lessonId);                             // 执行
    }

    @Override
    public Long insert(LessonResource r) {                              // 新增资源
        String sql = "INSERT INTO lesson_resource (lesson_id,res_type,title,url,created_at) VALUES (?,?,?,?,?)"; // SQL
        Date created = r.getCreatedAt() == null ? new Date() : r.getCreatedAt(); // 默认当前
        return execInsertReturnId(sql, r.getLessonId(), r.getResType(), r.getTitle(), r.getFileUrl(),
                new Timestamp(created.getTime()));                      // 执行插入
    }

    @Override
    public int updateBasic(LessonResource r) {                          // 更新基础字段
        String sql = "UPDATE lesson_resource SET res_type=?, title=?, url=? WHERE id=?"; // SQL
        return execUpdate(sql, r.getResType(), r.getTitle(), r.getFileUrl(), r.getId());    // 执行更新
    }

    @Override
    public int deleteById(Long id) {                                    // 删除
        String sql = "DELETE FROM lesson_resource WHERE id=?";          // SQL
        return execUpdate(sql, id);                                     // 执行
    }
}

